﻿// 10152. 矩阵取数游戏.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

/*
https://loj.ac/p/10152

题目描述
原题来自：NOIP 2007

帅帅经常和同学玩一个矩阵取数游戏：对于给定的 n *m 的矩阵，矩阵中每个元素 a_{ij} 均为非负整数。游戏规则如下：

每次取数时必须从每行各取走一个元素，共 n 个，m 次取完所有元素。
每次取走的各个元素只能是该元素所在行行首或行尾。
每次取数都有一个的分值，为每行取数得分之和，每行取数得分=被取走元素值 *2^i，其中 i 表示第 i 次取数，从 1 开始计数。
游戏结束时，总得分为 m 次取数得分之和。
帅帅想让你帮忙写一个程序，对于任意矩阵，可以求出取数后的最大得分。

输入格式
输入包括 n+1 行。 第一行两个空格隔开的正整数 n,m 接下来 n 行每行 m 个用空格隔开的整数。

输出格式
输出为一个整数，为所输入矩阵取数后的最大得分

2 3
1 2 3
3 4 2

82

第一次：第一行取行首元素，第二行取行尾元素，本次得分为 1 *2^1+2 *2^1=6； 
第二次：两行均取行首元素，本次得分为 2 *2^2+3 *2^2=20； 
第三次：本次得分为 3 *2^3+4 *2^3=56，总得分为 6+20+56=82。

1 4
4 5 0 5

122


2 10
96 56 54 46 86 12 23 88 80 43
16 95 18 29 30 53 88 83 64 67

316994


数据范围与提示
对于 60\% 的数据，1 <= n,m <= 30，答案不超过 10^{16}；
对于 100\% 的数据，1 <= n,m <= 80,0 <= a_{i,j} <= 1000。

*/
int main()
{
    std::cout << "Hello World!\n";
}

 